From c728c09c0ffc4af2d25f974aa753eba5287084e5 Mon Sep 17 00:00:00 2001 From: "cl349@freefall.cl.cam.ac.uk" Date: Wed, 10 Nov 2004 16:00:14 +0000 Subject: [PATCH] bitkeeper revision 1.1159.1.404 (41923b0epYovqxxi6oRwepHm8dm7JQ) Add irq_enter/irq_exit to local timer interrupt. --- linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c index b18b93c348..ea049218e0 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c @@ -402,12 +402,11 @@ static inline void do_timer_interrupt(int irq, void *dev_id, processed_system_time += NS_PER_TICK; do_timer(regs); #ifdef CONFIG_SMP - if (regs) /* XXXsmp this needs to be done on every cpu - * - every tick - maybe */ - update_process_times(user_mode(regs)); + if (regs) + update_process_times(user_mode(regs)); #endif if (regs) - profile_tick(CPU_PROFILING, regs); + profile_tick(CPU_PROFILING, regs); } /* @@ -712,9 +711,16 @@ static irqreturn_t local_timer_interrupt(int irq, void *dev_id, if ((xxx++ % 100) == 0) xxprint("local_timer_interrupt\n"); + /* + * update_process_times() expects us to have done irq_enter(). + * Besides, if we don't timer interrupts ignore the global + * interrupt lock, which is the WrongThing (tm) to do. + */ + irq_enter(); /* XXX add processed_system_time loop thingy */ if (regs) update_process_times(user_mode(regs)); + irq_exit(); return IRQ_HANDLED; } -- 2.30.2